package com.docMan.service;

import java.util.List;

import javax.ws.rs.BeanParam;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.docMan.dao.pojo.DocFile;

@Path("/DocFile")
@Produces(MediaType.APPLICATION_JSON)
public interface DocFileService extends BaseService<DocFile> {
	@Path("/getFile")
	@POST
	abstract String getFile(@BeanParam DocFile docFile);

	@Path("/saveOrUpdate")
	@POST
	abstract String saveOrUpdateFile(@BeanParam DocFile docFile);

	@Path("/createFiles")
	@POST
	/**
	 * 
	 * @param fileNames
	 * @param id id类型可以是diskid或者directoryid
	 * @param type 说明id表示的id的类型
	 * @return
	 */
	abstract String createFiles(@FormParam("filePaths") List<String> fileNames,
			@FormParam("fileSizes") List<String> fileSizes,
			@FormParam("id") int id, @FormParam("type") int type);

	/**
	 * 
	 * @param fileIds
	 * @return
	 */
	@POST
	@Path("/deleteFiles")
	abstract String deleteFiles(@FormParam("fileIds") List<Integer> fileIds);

	@GET
	@Path("/searchLucene")
	abstract String searchLucene(@FormParam("param") String param);

	/**
	 * 判断当前登入用户是否可以下载或预览文件
	 * 
	 * @param fileId
	 * @return
	 */
	abstract boolean canDownload(int fileId);

	/**
	 * 
	 * @param collectFileId
	 *            收藏的文件id
	 * @param directoryId
	 *            收藏到文件夹的id
	 * @return
	 */
	@POST
	@Path("/collectFile")
	abstract String collectFile(@FormParam("collectFileId") int collectFileId,
			@FormParam("directoryId") int directoryId, @FormParam("collectFileType") String collectFileType);
	
	@POST
	@Path("/copyFile")
	abstract String copyFile(@FormParam("fileIds")List<Integer> fileIds,@FormParam("directoryId")int directoryId);
	
	@POST
	@Path("/moveFile")
	abstract String moveFile(@FormParam("fileIds")List<Integer> fileIds,@FormParam("directoryId")int directoryId);
}
